<?php
/**
 * Created by PhpStorm.
 * User: Zhoujinda
 * Date: 2016/8/1
 * Time: 14:59
 */
namespace Mengwu\Api\Pay;
class Alipaydirect{

    private $config = [];

    function __construct(){
        $this->config = $this->getConfig();
        //引入支付官方sdk
        vendor('alipay_submit',APP_PATH.'Api/Vendor/AlipayDirect/lib','.class.php');
    }

    public function verifyNotify(){
        vendor('alipay_notify',APP_PATH.'Api/Vendor/AlipayDirect/lib','.class.php');
        $alipayNotify = new \AlipayNotify($this->config);
        $verify_result = $alipayNotify->verifyNotify();
        return $verify_result;
    }

    /**
     * 支付宝网页即时到账 构建请求参数
     */
    public function create_direct_pay_by_user($out_trade_no,$subject,$total_fee,$body=''){
        /**************************请求参数**************************/
        //商户订单号，商户网站订单系统中唯一订单号，必填
        //$out_trade_no = $_POST['WIDout_trade_no'];

        //订单名称，必填
        //$subject = $_POST['WIDsubject'];

        //付款金额，必填
        //$total_fee = $_POST['WIDtotal_fee'];

        //商品描述，可空
        //$body = $_POST['WIDbody'];

        /************************************************************/

        //构造要请求的参数数组，无需改动
        $alipay_config = $this->config;
        $parameter = array(
            "service"       => $alipay_config['service'],
            "partner"       => $alipay_config['partner'],
            "seller_id"  => $alipay_config['seller_id'],
            "payment_type"	=> $alipay_config['payment_type'],
            "notify_url"	=> $alipay_config['notify_url'],
            "return_url"	=> $alipay_config['return_url'],

            "anti_phishing_key"=>$alipay_config['anti_phishing_key'],
            "exter_invoke_ip"=>$alipay_config['exter_invoke_ip'],
            "out_trade_no"	=> $out_trade_no,
            "subject"	=> $subject,
            "total_fee"	=> $total_fee,
            "body"	=> $body,
            "_input_charset"	=> trim(strtolower($alipay_config['input_charset']))
            //其他业务参数根据在线开发文档，添加参数.文档地址:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.kiX33I&treeId=62&articleId=103740&docType=1
            //如"参数名"=>"参数值"

        );

        //建立请求
        $alipaySubmit = new \AlipaySubmit($alipay_config);
        $html_text = $alipaySubmit->buildRequestForm($parameter,"get", "确认");
        echo $html_text;
    }

    private function getConfig(){
        /* *
         * 配置文件
         * 版本：3.5
         * 日期：2016-06-25
         * 说明：
         * 以下代码只是为了方便商户测试而提供的样例代码，商户可以根据自己网站的需要，按照技术文档编写,并非一定要使用该代码。
         * 该代码仅供学习和研究支付宝接口使用，只是提供一个参考。

         * 安全校验码查看时，输入支付密码后，页面呈灰色的现象，怎么办？
         * 解决方法：
         * 1、检查浏览器配置，不让浏览器做弹框屏蔽设置
         * 2、更换浏览器或电脑，重新登录查询。
         */

        //↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
        //合作身份者ID，签约账号，以2088开头由16位纯数字组成的字符串，查看地址：https://openhome.alipay.com/platform/keyManage.htm?keyType=partner
                $alipay_config['partner']		= '2088221673470288';

        //收款支付宝账号，以2088开头由16位纯数字组成的字符串，一般情况下收款账号就是签约账号
                $alipay_config['seller_id']	= $alipay_config['partner'];

        //商户的私钥,此处填写原始私钥去头去尾，RSA公私钥生成：https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.nBDxfy&treeId=58&articleId=103242&docType=1
                $alipay_config['private_key']	= 'MIICXAIBAAKBgQC0d+FNs2acTRRBDXT+vROgHui/bykwXG82uxGoPr//RbjDSIVD5g5ZlAYXOhMA88ZDShE+AzWhx0wybsZ40EGdU77ywx0zW8xj/8FQPbGUu8NPTQt2zPDnMgBbxczyGYUpUIFMrYS/R/DUAeeaiYY8JWbhSD8pN7JvAd8U+wX3SwIDAQABAoGAVk+/gdn7iWWT+kjlW7AyYrJlvqj7mhWbWyG9ICpiyUQfSca1dfPhiRYyk4lC7YGpoSUbef0u+WDIIJa6da2kszxtykT7Bb4Tvy1TxPwri2Ia1C5oqldGuW9bYJuuIOfvl5eItvQzGRDapiQ184lhKRfmZxBGiQdMsMvg2pOdEQECQQDZKuVGfZQN8WL6CRhPqXoYJjCf6Z2LZxPP7nRZuYFkIXCo4NOiY1HSlEpVQduyoPwaRrV18HA73sPhl4e5TKi5AkEA1L0H+cVNCGMxoEnoFeJoJqJLr2EoDk21JYa7Me8jsGtvapjn4mhHIyJUGvjstpRW+Az4R4vN6PZc6P0ki+MWIwJBALl4FBXuvBpoVJKcX+HxKPAk9ZQtLbrXzqjfywiyEJqWoKPqV3SxhDjnItDLjTlymbxLNUDDluba6sno4yZTHSkCQCC/GEMyQ7FO04zA06DKwQ1xXgUZB3lsLL4iBx6gmPXHE9dswgTv2ENoPVoJhyZznw9/r5gTxRZfFd4nWUDPK9ECQFewUYnO/f190rRJv2n415ao2djjaOQn4m/pEXV5r64iXz+/2hztbRNZyzHQ1giZcyEEBsXnVa4XSTKuqqTU9jA=';

        //支付宝的公钥，查看地址：https://b.alipay.com/order/pidAndKey.htm
                $alipay_config['alipay_public_key']= 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCnxj/9qwVfgoUh/y2W89L6BkRAFljhNhgPdyPuBV64bfQNN1PjbCzkIM6qRdKBoLPXmKKMiFYnkd6rAoprih3/PrQEB/VsW8OoM8fxn67UDYuyBTqA23MML9q1+ilIZwBC2AQ2UBVOrFXfFl75p6/B5KsiNG9zpgmLCUYuLkxpLQIDAQAB';

        // 服务器异步通知页面路径  需http://格式的完整路径，不能加?id=123这类自定义参数，必须外网可以正常访问
                //$alipay_config['notify_url'] = C('API_URL')."/alipay_app/return_url";
        $alipay_config['notify_url'] =  C('API_URL_OUT')."/alipay_direct/return_url";

        // 页面跳转同步通知页面路径 需http://格式的完整路径，不能加?id=123这类自定义参数，必须外网可以正常访问
                $alipay_config['return_url'] = C('SITE_URL')."/index.php/mengwu/order/pay_success";

        //签名方式
                $alipay_config['sign_type']    = strtoupper('RSA');

        //字符编码格式 目前支持 gbk 或 utf-8
                $alipay_config['input_charset']= strtolower('utf-8');

        //ca证书路径地址，用于curl中ssl校验
        //请保证cacert.pem文件在当前文件夹目录中
                $alipay_config['cacert']    = APP_PATH.'Api/Vendor/AlipayDirect/cacert.pem';

        //访问模式,根据自己的服务器是否支持ssl访问，若支持请选择https；若不支持请选择http
                $alipay_config['transport']    = 'http';

        // 支付类型 ，无需修改
                $alipay_config['payment_type'] = "1";

        // 产品类型，无需修改
                $alipay_config['service'] = "create_direct_pay_by_user";

        //↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑


        //↓↓↓↓↓↓↓↓↓↓ 请在这里配置防钓鱼信息，如果没开通防钓鱼功能，为空即可 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

        // 防钓鱼时间戳  若要使用请调用类文件submit中的query_timestamp函数
                $alipay_config['anti_phishing_key'] = "";

        // 客户端的IP地址 非局域网的外网IP地址，如：221.0.0.1
                $alipay_config['exter_invoke_ip'] = "";

        //↑↑↑↑↑↑↑↑↑↑请在这里配置防钓鱼信息，如果没开通防钓鱼功能，为空即可 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
        return $alipay_config;
    }

    private function md5(){
        /* *
         * 配置文件
         * 版本：3.4
         * 修改日期：2016-03-08
         * 说明：
         * 以下代码只是为了方便商户测试而提供的样例代码，商户可以根据自己网站的需要，按照技术文档编写,并非一定要使用该代码。
         * 该代码仅供学习和研究支付宝接口使用，只是提供一个参考。

         * 安全校验码查看时，输入支付密码后，页面呈灰色的现象，怎么办？
         * 解决方法：
         * 1、检查浏览器配置，不让浏览器做弹框屏蔽设置
         * 2、更换浏览器或电脑，重新登录查询。
         */

        //↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
        //合作身份者ID，签约账号，以2088开头由16位纯数字组成的字符串，查看地址：https://b.alipay.com/order/pidAndKey.htm
        $alipay_config['partner']		= '2088221673470288';

        //收款支付宝账号，以2088开头由16位纯数字组成的字符串，一般情况下收款账号就是签约账号
        $alipay_config['seller_id']	= $alipay_config['partner'];

        // MD5密钥，安全检验码，由数字和字母组成的32位字符串，查看地址：https://b.alipay.com/order/pidAndKey.htm
        $alipay_config['key']			= '1xcmk0rss2du4zqw01ny39si2c5xx1te';

        // 服务器异步通知页面路径  需http://格式的完整路径，不能加?id=123这类自定义参数，必须外网可以正常访问
        $alipay_config['notify_url'] = C('API_URL_OUT')."/alipay_app/return_url";

        // 页面跳转同步通知页面路径 需http://格式的完整路径，不能加?id=123这类自定义参数，必须外网可以正常访问
        $alipay_config['return_url'] = C('SITE_URL')."/index.php/mengwu/order/pay_success";

        //签名方式
        $alipay_config['sign_type']    = strtoupper('MD5');

        //字符编码格式 目前支持 gbk 或 utf-8
        $alipay_config['input_charset']= strtolower('utf-8');

        //ca证书路径地址，用于curl中ssl校验
        //请保证cacert.pem文件在当前文件夹目录中
        $alipay_config['cacert']    = APP_PATH.'Api/Vendor/AlipayDirect/cacert.pem';

        //访问模式,根据自己的服务器是否支持ssl访问，若支持请选择https；若不支持请选择http
        $alipay_config['transport']    = 'http';

        // 支付类型 ，无需修改
        $alipay_config['payment_type'] = "1";

        // 产品类型，无需修改
        $alipay_config['service'] = "create_direct_pay_by_user";

        //↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑


        //↓↓↓↓↓↓↓↓↓↓ 请在这里配置防钓鱼信息，如果没开通防钓鱼功能，为空即可 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

        // 防钓鱼时间戳  若要使用请调用类文件submit中的query_timestamp函数
        $alipay_config['anti_phishing_key'] = "";

        // 客户端的IP地址 非局域网的外网IP地址，如：221.0.0.1
        $alipay_config['exter_invoke_ip'] = "";

        //↑↑↑↑↑↑↑↑↑↑请在这里配置防钓鱼信息，如果没开通防钓鱼功能，为空即可 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

        return $alipay_config;
    }


}